package com.sbl.config;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

/**
 *  和事务相关的配置类
 */
public class TransactionConfig {

    /**
     *  用于创建事务管理器对象
     *      注入参数 DataSource dataSource 的时候，如果只有唯一一个DataSource对象，可以直接自动注入
     *                                            有多个对象的时候，1. 变量名字用id；
     *                                                              2. 用@Qualifier注解（本例中用这个实现）
     *
     *  事务控制的数据源要和 JdbcTemplate数据源是同一个
     */
    @Bean(name = "transactionManager")
    public PlatformTransactionManager createTransactionManager(@Qualifier("dataSource")DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }
}
